package com.example.myapplication12_2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements View.OnTouchListener {

    // 声明ImageView变量（用于操作图片控件）
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // 加载布局文件

        // 初始化控件（步骤1：获取布局中的ImageView）
        initViews();

        // 设置触摸监听器（步骤2：让图片可以响应触摸事件）
        setupTouchListener();
    }

    // 初始化控件的方法（从布局中找到ImageView）
    private void initViews() {
        imageView = findViewById(R.id.imageView); // 通过ID找到布局中的ImageView
    }

    // 设置触摸监听器的方法
    private void setupTouchListener() {
        imageView.setOnTouchListener(this); // 给ImageView添加触摸监听器
    }

    // 实现触摸事件的处理方法（当触摸屏幕时触发）
    @Override
    public boolean onTouch(View view, MotionEvent event) {
        // 获取手指在屏幕上的位置（相对于父容器的坐标）
        float touchX = event.getX() + view.getX(); // 手指在X轴的位置
        float touchY = event.getY() + view.getY(); // 手指在Y轴的位置

        // 判断用势类型（手指移动）
        if (event.getAction() == MotionEvent.ACTION_MOVE) {
            // 让图片跟随手指移动（将图片中心对准手指位置）
            // 减去图片宽度/高度的一半，使触摸点位于图片中心
            imageView.setX(touchX - imageView.getWidth() / 2);
            imageView.setY(touchY - imageView.getHeight() / 2);
        }

        // 返回true表示我们已处理此触摸事件
        return true;
    }

    // 获取状态栏高度的方法（备用功能，可用于坐标修正）
    private int getStatusBarHeight() {
        int result = 0;
        // 通过系统资源ID查找状态栏高度
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = getResources().getDimensionPixelSize(resourceId); // 转换为像素值
        }
        return result; // 返回状态栏高度
    }
}